home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / bin / autoheader-2.59 < prev    next >
Text File  |  2006-04-25  |  8KB  |  297 lines

  1. #! /usr/bin/perl
  2. # -*- Perl -*-
  3. # Generated from autoheader.in; do not edit by hand.
  4.  
  5. eval 'case $# in 0) exec /usr/bin/perl -S "$0";; *) exec /usr/bin/perl -S "$0" "$@";; esac'
  6.     if 0;
  7.  
  8. # autoheader -- create `config.h.in' from `configure.ac'
  9. # Copyright (C) 1992, 1993, 1994, 1996, 1998, 1999, 2000, 2001, 2002, 2003
  10. # Free Software Foundation, Inc.
  11.  
  12. # This program is free software; you can redistribute it and/or modify
  13. # it under the terms of the GNU General Public License as published by
  14. # the Free Software Foundation; either version 2, or (at your option)
  15. # any later version.
  16.  
  17. # This program is distributed in the hope that it will be useful,
  18. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  19. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  20. # GNU General Public License for more details.
  21.  
  22. # You should have received a copy of the GNU General Public License
  23. # along with this program; if not, write to the Free Software
  24. # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
  25. # 02111-1307, USA.
  26.  
  27. # Written by Roland McGrath.
  28. # Rewritten in Perl by Akim Demaille.
  29.  
  30. BEGIN
  31. {
  32.   my $datadir = $ENV{'autom4te_perllibdir'} || '/usr/share/autoconf';
  33.   unshift @INC, "$datadir";
  34.  
  35.   # Override SHELL.  On DJGPP SHELL may not be set to a shell
  36.   # that can handle redirection and quote arguments correctly,
  37.   # e.g.: COMMAND.COM.  For DJGPP always use the shell that configure
  38.   # has detected.
  39.   $ENV{'SHELL'} = '/bin/sh' if ($^O eq 'dos');
  40. }
  41.  
  42. use Autom4te::ChannelDefs;
  43. use Autom4te::Channels;
  44. use Autom4te::Configure_ac;
  45. use Autom4te::FileUtils;
  46. use Autom4te::General;
  47. use Autom4te::XFile;
  48. use strict;
  49.  
  50. # Using `do FILE', we need `local' vars.
  51. use vars qw ($config_h %verbatim %symbol);
  52.  
  53. # Lib files.
  54. my $autom4te = $ENV{'AUTOM4TE'} || '/usr/bin/autom4te-2.59';
  55. local $config_h;
  56. my $config_h_in;
  57. my @prepend_include;
  58. my @include;
  59.  
  60.  
  61. # $HELP
  62. # -----
  63. $help = "Usage: $0 [OPTION] ... [TEMPLATE-FILE]
  64.  
  65. Create a template file of C \`\#define\' statements for \`configure\' to
  66. use.  To this end, scan TEMPLATE-FILE, or \`configure.ac\' if present,
  67. or else \`configure.in\'.
  68.  
  69.   -h, --help               print this help, then exit
  70.   -V, --version            print version number, then exit
  71.   -v, --verbose            verbosely report processing
  72.   -d, --debug              don\'t remove temporary files
  73.   -f, --force              consider all files obsolete
  74.   -W, --warnings=CATEGORY  report the warnings falling in CATEGORY
  75.  
  76. " . Autom4te::ChannelDefs::usage () . "
  77.  
  78. Library directories:
  79.   -B, --prepend-include=DIR  prepend directory DIR to search path
  80.   -I, --include=DIR          append directory DIR to search path
  81.  
  82. Report bugs to <bug-autoconf\@gnu.org>.
  83. ";
  84.  
  85.  
  86. # $VERSION
  87. # --------
  88. $version = "autoheader (GNU Autoconf) 2.59
  89. Written by Roland McGrath and Akim Demaille.
  90.  
  91. Copyright (C) 2003 Free Software Foundation, Inc.
  92. This is free software; see the source for copying conditions.  There is NO
  93. warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  94. ";
  95.  
  96.  
  97. ## ---------- ##
  98. ## Routines.  ##
  99. ## ---------- ##
  100.  
  101.  
  102. # parse_args ()
  103. # -------------
  104. # Process any command line arguments.
  105. sub parse_args ()
  106. {
  107.   my $srcdir;
  108.  
  109.   parse_WARNINGS;
  110.   getopt ('I|include=s'         => \@include,
  111.       'B|prepend-include=s' => \@prepend_include,
  112.       'W|warnings=s'        => \&parse_warnings);
  113.  
  114.   if (! @ARGV)
  115.     {
  116.       my $configure_ac = require_configure_ac;
  117.       push @ARGV, $configure_ac;
  118.     }
  119. }
  120.  
  121.  
  122. ## -------------- ##
  123. ## Main program.  ##
  124. ## -------------- ##
  125.  
  126. mktmpdir ('ah');
  127. switch_warning 'obsolete';
  128. parse_args;
  129.  
  130. # Preach.
  131. my $config_h_top = find_file ("config.h.top?",
  132.                   reverse (@prepend_include), @include);
  133. my $config_h_bot = find_file ("config.h.bot?",
  134.                   reverse (@prepend_include), @include);
  135. my $acconfig_h = find_file ("acconfig.h?",
  136.                 reverse (@prepend_include), @include);
  137. if ($config_h_top || $config_h_bot || $acconfig_h)
  138.   {
  139.     my $msg = << "END";
  140.     Using auxiliary files such as \`acconfig.h\', \`config.h.bot\'
  141.     and \`config.h.top\', to define templates for \`config.h.in\'
  142.     is deprecated and discouraged.
  143.  
  144.     Using the third argument of \`AC_DEFINE\' and
  145.     \`AC_DEFINE_UNQUOTED\' allows to define a template without
  146.     \`acconfig.h\':
  147.  
  148.       AC_DEFINE([NEED_FUNC_MAIN], 1,
  149.         [Define if a function \`main\' is needed.])
  150.  
  151.     More sophisticated templates can also be produced, see the
  152.     documentation.
  153. END
  154.     $msg =~ s/^    /WARNING: /gm;
  155.     msg 'obsolete', $msg;
  156.   }
  157.  
  158. # Set up autoconf.
  159. my $autoconf = "$autom4te --language=autoconf ";
  160. $autoconf .= join (' ', map { "--include=$_" } @include);
  161. $autoconf .= join (' ', map { "--prepend-include=$_" } @prepend_include);
  162. $autoconf .= ' --debug' if $debug;
  163. $autoconf .= ' --force' if $force;
  164. $autoconf .= ' --verbose' if $verbose;
  165.  
  166. # ----------------------- #
  167. # Real work starts here.  #
  168. # ----------------------- #
  169.  
  170. # Source what the traces are trying to tell us.
  171. verb "$me: running $autoconf to trace from $ARGV[0]";
  172. xsystem ("$autoconf"
  173.      # If you change this list, update the
  174.      # `Autoheader-preselections' section of autom4te.in.
  175.      . ' --trace AC_CONFIG_HEADERS:\'$$config_h ||= \'"\'"\'$1\'"\'"\';\''
  176.      . ' --trace AH_OUTPUT:\'$$verbatim{\'"\'"\'$1\'"\'"\'} = \'"\'"\'$2\'"\'"\';\''
  177.      . ' --trace AC_DEFINE_TRACE_LITERAL:\'$$symbol{\'"\'"\'$1\'"\'"\'} = 1;\''
  178.      . " $ARGV[0] >$tmp/traces.pl");
  179.  
  180. local (%verbatim, %symbol);
  181. debug "$me: \`do'ing $tmp/traces.pl:\n" . `sed 's/^/| /' $tmp/traces.pl`;
  182. do "$tmp/traces.pl";
  183. warn "couldn't parse $tmp/traces.pl: $@" if $@;
  184. error "error: AC_CONFIG_HEADERS not found in $ARGV[0]"
  185.   unless $config_h;
  186.  
  187. # We template only the first CONFIG_HEADER.
  188. $config_h =~ s/ .*//;
  189. # Support "outfile[:infile]", defaulting infile="outfile.in".
  190. ($config_h, $config_h_in) = split (':', $config_h, 2);
  191. $config_h_in ||= "$config_h.in";
  192.  
  193. # %SYMBOL might contain things like `F77_FUNC(name,NAME)', but we keep
  194. # only the name of the macro.
  195. %symbol = map { s/\(.*//; $_ => 1 } keys %symbol;
  196.  
  197. my $out = new Autom4te::XFile (">$tmp/config.hin");
  198.  
  199. # Don't write "do not edit" -- it will get copied into the
  200. # config.h, which it's ok to edit.
  201. print $out "/* $config_h_in.  Generated from $ARGV[0] by autoheader.  */\n";
  202.  
  203. # Dump the top.
  204. if ($config_h_top)
  205.   {
  206.     my $in = new Autom4te::XFile ($config_h_top);
  207.     while ($_ = $in->getline)
  208.       {
  209.     print $out $_;
  210.       }
  211.   }
  212.  
  213. # Dump `acconfig.h', except for its bottom portion.
  214. if ($acconfig_h)
  215.   {
  216.     my $in = new Autom4te::XFile ($acconfig_h);
  217.     while ($_ = $in->getline)
  218.       {
  219.     last if /\@BOTTOM\@/;
  220.     next if /\@TOP\@/;
  221.     print $out $_;
  222.       }
  223.   }
  224.  
  225. # Dump the templates from `configure.ac'.
  226. foreach (sort keys %verbatim)
  227.   {
  228.     print $out "\n$verbatim{$_}\n";
  229.   }
  230.  
  231. # Dump bottom portion of `acconfig.h'.
  232. if ($acconfig_h)
  233.   {
  234.     my $in = new Autom4te::XFile ($acconfig_h);
  235.     my $dump = 0;
  236.     while ($_ = $in->getline)
  237.       {
  238.     print $out $_ if $dump;
  239.     $dump = 1  if /\@BOTTOM\@/;
  240.       }
  241.   }
  242.  
  243. # Dump the bottom.
  244. if ($config_h_bot)
  245.   {
  246.     my $in = new Autom4te::XFile ($config_h_bot);
  247.     while ($_ = $in->getline)
  248.       {
  249.     print $out $_;
  250.       }
  251.   }
  252.  
  253. $out->close;
  254.  
  255. # Check that all the symbols have a template.
  256. {
  257.   my $in = new Autom4te::XFile ("$tmp/config.hin");
  258.   my $suggest_ac_define = 1;
  259.   while ($_ = $in->getline)
  260.     {
  261.       my ($symbol) = /^\#\s*\w+\s+(\w+)/
  262.     or next;
  263.       delete $symbol{$symbol};
  264.     }
  265.   foreach (sort keys %symbol)
  266.     {
  267.       msg 'syntax', "warning: missing template: $_";
  268.       if ($suggest_ac_define)
  269.     {
  270.       msg 'syntax',  "Use AC_DEFINE([$_], [], [Description])";
  271.       $suggest_ac_define = 0;
  272.     }
  273.  
  274.     }
  275.   exit 1
  276.     if keys %symbol;
  277. }
  278.  
  279. update_file ("$tmp/config.hin", "$config_h_in");
  280.  
  281. ### Setup "GNU" style for perl-mode and cperl-mode.
  282. ## Local Variables:
  283. ## perl-indent-level: 2
  284. ## perl-continued-statement-offset: 2
  285. ## perl-continued-brace-offset: 0
  286. ## perl-brace-offset: 0
  287. ## perl-brace-imaginary-offset: 0
  288. ## perl-label-offset: -2
  289. ## cperl-indent-level: 2
  290. ## cperl-brace-offset: 0
  291. ## cperl-continued-brace-offset: 0
  292. ## cperl-label-offset: -2
  293. ## cperl-extra-newline-before-brace: t
  294. ## cperl-merge-trailing-else: nil
  295. ## cperl-continued-statement-offset: 2
  296. ## End:
  297.